var mongoose=require('mongoose');
var config=require('../config');
var mongodb = require('mongodb');
var Buyer=require('./buyer');
var Schema=mongoose.Schema;
var db=mongoose.createConnection(config.db_url);
db.on('error',function(error){
    db.close();
    console.log(error);
});

db.on('close', function () {
    db.open(config.db_url);
    console.log("重新连接mongo");
});

var simSchema = new Schema({
    box_id: String,
    sim: String, 
    state: {type:Number,default:0}, //通过sim号打印二维码次数
    operators: String, //sim卡所属运营商
    charge: String //资费
});
var Sim = db.model("Sim", simSchema);

Sim.prototype.findSimBySim=function (sim,callback){
    Sim.findOne({sim:sim}, function(err, doc){
        if(doc){
            return callback(err, doc);
        }
        return callback(err);
    });
}

Sim.prototype.findUserSimById=function (opt,callback){
    Sim.find(opt, function(err, datas){
        return callback(err,datas);
    });
}

Sim.prototype.findIdBySim=function (sim,callback){
    Sim.findOne({sim:sim}, function(err, datas){
        return callback(datas);
    });
}

Sim.prototype.findSimById=function (boxid,callback){
    Sim.findOne({box_id:boxid}, function(err, datas){
        return callback(datas);
    });
}

Sim.prototype.updateStateBySim=function(sim,callback){
    Sim.update({sim:sim},{"$inc":{"state":1}},function(err){
        return callback(err);
    })
}

Sim.prototype.updateAllBySim=function(sim,operators,charge,callback){
    Sim.update({sim:sim},{operators:operators,charge:charge},function(err){
        return callback(err);
    })
}

Sim.prototype.removeSimBySim=function (sim,callback){
    Sim.remove({sim:sim}, function(err){
        return callback(err);
    });
}

Sim.prototype.updateIdBySim=function(sim,boxid,callback){
    Sim.update({sim:sim},{box_id:boxid},function(err){
        return callback(err);
    })
}

Sim.prototype.findAllSim=function(callback){
    Sim.find({box_id:"未绑定"},function(err,datas){
        return callback(datas);
    })
}


Sim.prototype.findForpage=function(obj,keyword,callback){
    var q=obj.search||{};                                       //查询条件
    var col=obj.columns||{};                                    //返回字段
    var query=Sim.find(q,col).skip(obj.page.skipFrom).limit(obj.page.limit).populate(keyword);
    
    query.exec(function(err, datas) {
        if (err) {
            callback(err, null, null);
        } else {
            Sim.count(q, function(err, count) {
                if (err) {
                    callback(err, null, null);
                } else {
                    var pageCount = Math.ceil(count / obj.page.limit);
                    callback(null,count,pageCount, datas);
                }
            });
        }
    });
}

Sim.prototype.findForPage=function(obj,callback){
    var q=obj.search||{};                                       //查询条件
    var col=obj.columns||{};                                    //返回字段
    var query=Sim.find(q,col).skip(obj.page.skipFrom).limit(obj.page.limit);

    query.exec(function(err, datas) {
        if (err) {
            callback(err, null, null);
        } else {
            Sim.count(q, function(err, count) {
                if (err) {
                    callback(err, null, null);
                } else {
                    var pageCount = Math.ceil(count / obj.page.limit);
                    callback(null,count,pageCount, datas);
                }
            });
        }
    });
}

module.exports = Sim;